/********************************************************************************
 *      Copyright:  (C) 2025 lijiahui<2199250859@qq.com>
 *                  All rights reserved.
 *
 *       Filename:  pack.h
 *    Description:  This file 
 *
 *        Version:  1.0.0(21/04/25)
 *         Author:  lijiahui <2199250859@qq.com>
 *      ChangeLog:  1, Release initial version on "21/04/25 13:10:21"
 *                 
 ********************************************************************************/

#ifndef _PACK_H_
#define _PACK_H_

#include <stdio.h>
#include <unistd.h>
#include <time.h>
#include <stdint.h>
#include <string.h>

#include "get_temp.h"
#include "logger.h"

#define  DEVID_LEN		8//设备号长度
#define  TLV_HEADER		0XFEED
#define  TLV_MINSIZE 	7

typedef struct packdata_t{
	char 	systime[32];
	char 	id[32];
	char	temp[32];
}pack_t;


int pack_data( pack_t *pack );
/* 
 * 函数指针，将字符串/json/tlv格式的打包函数通过统一的接口调用，实现多态性
 *通过新定义的函数指针类型pack_proc_t，可以动态选择打包方式
 */
typedef int (* pack_proc_t)(pack_t *pack, uint8_t *pack_buf, int size );

int pack_data_segmented( pack_t *pack, uint8_t *pack_buf, int size );
int pack_json_message( pack_t *pack, uint8_t *pack_buf, int size);

/* 
 *枚举类型，为TLV协议中的tag字段赋予有意义的名称和对应的整数值
 *（当tag=TAG_TEMPERATURE(1),value存储温度数据），以此类推
 * */
enum
{
	TAG_TEMPERATURE = 1,//温度，tag值为1
	TAG_HUMIDITY,		//湿度，tag值自动赋值为2
	TAG_NOISY,			//噪声，tag自动赋值为3
};

int pack_tlv_message(pack_t *pack, uint8_t *pack_buf, int size);


#endif
